home *** CD-ROM | disk | FTP | other *** search
Text File | 1992-09-23 | 16.9 KB | 1,144 lines |
-
- incdir "Includes:"
- include "misc/DeliPlayer.i"
-
- ;
- ;
- SECTION Player,Code
- ;
- ;
-
- PLAYERHEADER PlayerTagArray
-
- dc.b '$VER: SIDMon 2.0 player module V1.5 (30 Mar 92)',0
- even
-
- PlayerTagArray
- dc.l DTP_PlayerVersion,2
- dc.l DTP_PlayerName,PName
- dc.l DTP_Creator,CName
- dc.l DTP_Check2,Chk
- dc.l DTP_Interrupt,Int
- dc.l DTP_InitPlayer,InitPlayer
- dc.l DTP_EndPlayer,EndPlayer
- dc.l DTP_InitSound,InitSnd
- dc.l DTP_EndSound,RemSnd
- dc.l TAG_DONE
-
- *-----------------------------------------------------------------------*
- ;
- ; Player/Creatorname und lokale Daten
-
- PName dc.b 'SIDMon_2.0',0
- CName dc.b '???,',10
- dc.b 'adapted by Delirium',0
- even
-
- sm_data dc.l 0
-
- *-----------------------------------------------------------------------*
- ;
- ; Testet auf Modul
-
- Chk ; SidMon2.0 ?
- move.l dtg_ChkData(a5),a0
-
- moveq #-1,d0 ; Modul nicht erkannt (default)
-
- lea $3A(a0),a0
- lea SIDtext(pc),a1
- ChkLoop
- cmp.b (a0)+,(a1)+
- bne.s ChkEnd
- tst.b (a1)
- bne.s ChkLoop
-
- moveq #0,d0 ; Modul erkannt
- ChkEnd
- rts
-
-
- SIDtext dc.b 'SIDMON II - THE MIDI VERSION',0
- even
-
- *-----------------------------------------------------------------------*
- ;
- ; Init Player
-
- InitPlayer
- moveq #0,d0
- move.l dtg_GetListData(a5),a0 ; Function
- jsr (a0)
- move.l a0,sm_data
-
- move.l dtg_AudioAlloc(a5),a0 ; Function
- jsr (a0) ; returncode is already set !
- rts
-
- *-----------------------------------------------------------------------*
- ;
- ; End Player
-
- EndPlayer
- move.l dtg_AudioFree(a5),a0 ; Function
- jsr (a0)
- rts
-
- *-----------------------------------------------------------------------*
- ;
- ; Init Sound
-
- InitSnd
- move.l sm_data(pc),song
- jsr initmuzak ; Init Sound
- jsr InitAdditional
- rts
-
- *-----------------------------------------------------------------------*
- ;
- ; Rem Sound
-
- RemSnd
- moveq #0,d0
- lea $dff000,a0
- move.w d0,$a8(a0)
- move.w d0,$b8(a0)
- move.w d0,$c8(a0)
- move.w d0,$d8(a0)
- move.w #$f,$96(a0)
- rts
-
- *-----------------------------------------------------------------------*
- ;
- ; Interrupt für Replay
-
- Int
- movem.l d0-d7/a0-a6,-(sp)
- jsr playmuzak ; DudelDiDum
- movem.l (sp)+,d0-d7/a0-a6
- rts
-
- *-----------------------------------------------------------------------*
- ;
- ; Additional initialisation to prevent from enforcer hits
-
- InitAdditional
- lea voice1,a2
- moveq #$3,d7
-
- InitAddLoop
- clr.w 58(a2)
-
- clr.w 12(a2)
- clr.l 34(a2)
- clr.w 38(a2)
- clr.l 40(a2)
- clr.w 44(a2)
- clr.w 54(a2)
- clr.w 62(a2)
-
- move.w #$4,18(a2)
- clr.w 20(a2)
-
- moveq #$0,d1
- add.b 57(a2),d1
- lsl.w #$5,d1
- move.l ins1,a1
- add.l d1,a1
- move.l a1,22(a2)
-
- moveq #$0,d5
- move.b (a1),d5
- lsl.w #$4,d5
- move.l wavelists,a1
- add.l d5,a1
- moveq #$0,d5
- move.b (a1),d5
- move.b d5,73(a2)
- lsl.w #$6,d5
- move.l sampletab,a1
- add.l d5,a1
- move.l (a1)+,4(a2)
- move.w (a1)+,8(a2)
- move.l 4(a2),26(a2)
- moveq #$0,d5
- move.w (a1)+,d5
- add.l d5,d5
- add.l d5,26(a2)
- move.w (a1),30(a2)
-
- lea voice2-voice1(a2),a2
- dbf d7,InitAddLoop
-
- rts
-
- *-----------------------------------------------------------------------*
- ;
- ; SIDMon 2.0-Replay
-
- ;
- ;
- SECTION Replay,Code_C
- ;
- ;
-
- initmuzak:
- movem.l d0-d7/a0-a6,-(a7)
- ; bset #$1,$bfe001
- lea $dff000,a6
-
- move.w #$0,$a8(a6)
- move.w #$0,$b8(a6)
- move.w #$0,$c8(a6)
- move.w #$0,$d8(a6)
- move.w #$f,$96(a6)
-
- moveq #$0,d6
- lea header(pc),a0
- lea midimode(pc),a2
- moveq #$3a,d0
- add.l -6(a2),d0
- move.l d0,(a0)
- move.l -6(a2),a1
- move.w (a1)+,(a2)+
- move.b (a1)+,d6
- move.b d6,(a2)
- move.b (a1)+,1(a2)
- move.w (a1)+,d0
- lsr.w #$6,d0
- subq.w #$1,d0
- move.w d0,-4(a2)
- moveq #$40,d0
- move.l d0,2(a2)
- clr.b 6(a2)
-
- moveq #$a,d0
- addloop:move.l (a0)+,d1
- add.l (a1)+,d1
- move.l d1,(a0)
- dbf d0,addloop
-
- move.l a2,a0
-
- lea voice1(pc),a2
- moveq #$3,d7
- addq.w #$1,d6
- moveq #$0,d5
- findloop:
- clr.w 72(a2)
- move.l d5,(a2)
- add.l d6,d5
- bsr findnote
- lea voice2-voice1(a2),a2
- dbf d7,findloop
-
- moveq #$0,d0
- move.l patterns(pc),a0
- move.w -(a0),d0
- add.l patterns(pc),d0
- move.l d0,a1
-
- lea voice1(pc),a2
- moveq #$3f,d3
- plus: bsr getnote2
- dbf d3,plus
- clr.w 68(a2)
-
- move.l a1,d0
- addq.l #$1,d0
- bclr #$0,d0
- move.l d0,a0
-
- move.l sampletab(pc),a1
- move.w sampleno(pc),d0
- calcaddloop:
- move.l a0,(a1)
- moveq #$0,d1
- move.w 4(a1),d1
- add.l d1,d1
- add.l d1,a0
- lea $40(a1),a1
- dbf d0,calcaddloop
- movem.l (a7)+,d0-d7/a0-a6
- rts
-
- header: dc.l $0
- songlen: dc.l $0
- positions: dc.l $0
- ntransposes: dc.l $0
- itransposes: dc.l $0
- ins1: dc.l $0
- wavelists: dc.l $0
- arpeggiolists: dc.l $0
- vibratolists: dc.l $0
- sampletab: dc.l $0
- patternpointer: dc.l $0
- patterns: dc.l $0
-
- playmuzak:
- movem.l d0-d7/a0-a6,-(a7)
- lea $dff000,a6
-
- lea length(pc),a0
- addq.b #$1,6(a0)
- cmp.b #$3,6(a0)
- bne.s notthree
- clr.b 6(a0)
- notthree:
- addq.b #$1,4(a0)
- move.b 4(a0),d0
- cmp.b 1(a0),d0
- blt doeffects
- clr.b 4(a0)
- clr.b 6(a0)
-
- lea dma(pc),a5
- clr.w (a5)
-
- lea voice1(pc),a2
- bsr getnote
- lea voice2(pc),a2
- bsr getnote
- lea voice3(pc),a2
- bsr getnote
- lea voice4(pc),a2
- bsr getnote
-
- move.w (a5),$96(a6)
- add.w #$8000,(a5)
- lea voice1(pc),a2
- bsr playvoice
- lea voice2(pc),a2
- bsr playvoice
- lea voice3(pc),a2
- bsr playvoice
- lea voice4(pc),a2
- bsr playvoice
-
- bsr donegation
-
- move.b $6(a6),d0
- raster: cmp.b $6(a6),d0
- beq.s raster
-
- move.w (a5),$96(a6)
-
- move.b $6(a6),d0
- raster2:cmp.b $6(a6),d0
- beq.s raster2
-
- lea voice1(pc),a2
- moveq #$3,d0
- repeatloop:
- move.w 16(a2),d4
- move.l 26(a2),(a6,d4.w)
- move.w 30(a2),4(a6,d4.w)
- lea voice2-voice1(a2),a2
- dbf d0,repeatloop
-
- addq.b #$1,3(a0)
- move.b 5(a0),d0
- cmp.b 3(a0),d0
- bne.s doeffects
- clr.b 3(a0)
- move.b (a0),d0
-
- cmp.b 2(a0),d0
- bne.s addlater
- move.b #-$1,2(a0)
- addlater:
- addq.b #$1,2(a0)
-
- lea voice1(pc),a2
- bsr findnote
- lea voice2(pc),a2
- bsr findnote
- lea voice3(pc),a2
- bsr findnote
- lea voice4(pc),a2
- bsr findnote
-
- doeffects:
- lea voice1(pc),a2
- bsr doeffect
- lea voice2(pc),a2
- bsr doeffect
- lea voice3(pc),a2
- bsr doeffect
- lea voice4(pc),a2
- bsr doeffect
- tst.b 4(a0)
- beq.s nonega
- bsr.s donegation
- nonega: movem.l (a7)+,d0-d7/a0-a6
- rts
-
- donegation:
- movem.l d0-d4/a0-a3,-(a7)
- lea waveadds(pc),a3
- lea voice1(pc),a1
- moveq #$3,d0
- negationloop:
- move.w 72(a1),d1
- lsl.w #$6,d1
- move.l sampletab(pc),a0
- lea (a0,d1.w),a0
- move.l a0,(a3)+
- tst.w 26(a0)
- bne.s nonegation
- not.w 26(a0)
- tst.w 24(a0)
- beq.s checknegation
- subq.w #$1,24(a0)
- and.w #$1f,24(a0)
- bra.s nonegation
-
- checknegation:
- move.w 14(a0),24(a0)
- move.w 16(a0),d4
- beq.s nonegation
- move.l (a0),a2
- moveq #$0,d1
- moveq #$0,d2
- move.w 10(a0),d1
- move.w 12(a0),d2
- add.l d1,d1
- add.l d2,d2
- subq.l #$1,d2
- add.l d1,a2
- add.l 20(a0),a2
- not.b (a2)
- moveq #$0,d3
- move.w 18(a0),d3
- ext.l d3
- add.l d3,20(a0)
- tst.l 20(a0)
- bmi.s noright
- cmp.l 20(a0),d2
- bhs.s nonegation
- checkmode:
- cmp.w #$1,d4
- bne.s noleft
- clr.l 20(a0)
- bra.s nonegation
-
- noright:cmp.w #$2,d4
- bne.s noleft
- move.l d2,20(a0)
- bra.s nonegation
-
- noleft: neg.l d3
- add.l d3,20(a0)
- neg.w 18(a0)
-
- nonegation:
- lea voice2-voice1(a1),a1
- dbf d0,negationloop
-
- sub.w #$10,a3
- moveq #$3,d0
- joho: move.l (a3)+,a0
- clr.w 26(a0)
- dbf d0,joho
-
- movem.l (a7)+,d0-d4/a0-a3
- rts
-
- findnote:
- moveq #$0,d0
- moveq #$0,d1
- moveq #$0,d2
- move.b 2(a0),d0
-
- move.l positions(pc),a1
- add.l (a2),a1
- move.b (a1,d0.w),d2
- add.w d2,d2
- move.l patternpointer(pc),a1
- move.w (a1,d2.w),d2
- add.l patterns(pc),d2
- move.l d2,64(a2)
-
- move.l ntransposes(pc),a1
- add.l (a2),a1
- move.b (a1,d0.w),71(a2)
- move.l itransposes(pc),a1
- add.l (a2),a1
- move.b (a1,d0.w),57(a2)
- clr.b 69(a2)
- rts
-
- getnote:move.l 64(a2),a1
- bsr.s getnote2
- move.l a1,64(a2)
-
- move.w 46(a2),d0
- beq.s noteok
- move.w 14(a2),d1
- add.w d1,(a5)
- add.b 71(a2),d0
- move.w d0,46(a2)
- noteok: rts
-
- getnote2:
- moveq #$0,d1
- move.l d1,46(a2)
- move.l d1,50(a2)
-
- tst.b 69(a2)
- beq.s readnote
- subq.b #$1,69(a2)
- rts
-
- readnote:
- move.b (a1)+,d1
- beq.s nonotebutslide
- bpl.s simplenote
- negativvalue:
- not.b d1
- move.b d1,69(a2)
- rts
-
- simplenote:
- cmp.b #$70,d1
- blt.s simplenote2
- move.b d1,51(a2)
- move.b (a1)+,53(a2)
- rts
-
- simplenote2:
- move.b d1,47(a2)
- move.b (a1)+,d1
- bmi.s negativvalue
- cmp.b #$70,d1
- blt.s simpleins
- move.b d1,51(a2)
- move.b (a1)+,53(a2)
- rts
-
- simpleins:
- move.b d1,49(a2)
- move.b (a1)+,d1
- bmi.s negativvalue
- move.b d1,51(a2)
- move.b (a1)+,53(a2)
- rts
-
- nonotebutslide:
- move.b (a1)+,51(a2)
- move.b (a1)+,53(a2)
- rts
-
- playvoice:
- clr.w 58(a2)
-
- move.w 46(a2),d0
- beq nonote
-
- clr.w 12(a2)
- clr.l 34(a2)
- clr.w 38(a2)
- clr.l 40(a2)
- clr.w 44(a2)
- clr.w 54(a2)
- clr.w 62(a2)
-
- move.w #$4,18(a2)
- clr.w 20(a2)
-
- moveq #$0,d1
- move.w 48(a2),d1
- beq.s noinschange
- subq.b #$1,d1
- add.b 57(a2),d1
- lsl.w #$5,d1
- move.l ins1(pc),a1
- add.l d1,a1
- move.l a1,22(a2)
- moveq #$0,d5
- move.b (a1),d5
- lsl.w #$4,d5
- move.l wavelists(pc),a1
- add.l d5,a1
- moveq #$0,d5
- move.b (a1),d5
- move.b d5,73(a2)
- lsl.w #$6,d5
- move.l sampletab(pc),a1
- add.l d5,a1
- move.l (a1)+,4(a2)
- move.w (a1)+,8(a2)
- move.l 4(a2),26(a2)
- moveq #$0,d5
- move.w (a1)+,d5
- add.l d5,d5
- add.l d5,26(a2)
- move.w (a1),30(a2)
- noinschange:
- move.l 22(a2),a1
- moveq #$0,d5
- move.b 4(a1),d5
- lsl.w #$4,d5
- move.l arpeggiolists(pc),a1
- moveq #$0,d1
- move.b (a1,d5.w),d1
- ext.w d1
- add.w d1,d0
- move.w d0,32(a2)
- lea playperiods(pc),a3
- add.w d0,d0
- move.w 16(a2),d4
- move.w (a3,d0.w),10(a2)
- move.l 4(a2),(a6,d4.w)
- move.w 8(a2),4(a6,d4.w)
- move.w 10(a2),6(a6,d4.w)
- nonote: rts
-
- doeffect:
- move.w 16(a2),d4
- bsr doadsrcurve
- bsr dowaveform
- bsr doarpeggio
- bsr.s dosoundtracker
- bsr dovibrato
- bsr.s dopitchbend
- bsr donoteslide
-
- move.w 58(a2),d0
- add.w d0,10(a2)
-
- cmp.w #$5f,10(a2)
- bgt.s notlow
- move.w #$5f,10(a2)
- move.w 10(a2),6(a6,d4.w)
- rts
-
- notlow: cmp.w #$1680,10(a2)
- blt.s pitchok
- move.w #$1680,10(a2)
- pitchok:move.w 10(a2),6(a6,d4.w)
- rts
-
- dopitchbend:
- move.l 22(a2),a4
- moveq #$0,d0
- move.b 12(a4),d0
- beq.s nopitch
- move.b 13(a4),d1
- cmp.b 55(a2),d1
- bne.s pitchdelay
- ext.w d0
- add.w d0,58(a2)
- nopitch:rts
-
- pitchdelay:
- addq.b #$1,55(a2)
- rts
-
- dosoundtracker:
- move.w 50(a2),d0
- cmp.w #$70,d0
- blt.s noarp
- and.w #$f,d0
- tst.b 4(a0)
- bne.s egal
- cmp.b #$5,d0
- blt.s noarp
- egal: add.w d0,d0
- lea steffect(pc),a1
- move.w (a1,d0.w),d0
- lea arpeggio(pc),a1
- jmp (a1,d0.w)
- noarp: rts
-
- steffect:
- dc.w arpeggio-arpeggio
- dc.w pitchup-arpeggio
- dc.w pitchdown-arpeggio
- dc.w volumeup-arpeggio
- dc.w volumedown-arpeggio
- dc.w setadsrattack-arpeggio
- dc.w setpatternlen-arpeggio
- dc.w novolchange-arpeggio
- dc.w novolchange-arpeggio
- dc.w novolchange-arpeggio
- dc.w novolchange-arpeggio
- dc.w novolchange-arpeggio
- dc.w volumechange-arpeggio
- dc.w novolchange-arpeggio
- dc.w novolchange-arpeggio
- dc.w speedchange-arpeggio
-
- donoteslide:
- move.w 50(a2),d0
- beq.s nodestnote
- cmp.w #$70,d0
- bge.s nodestnote
- move.w 52(a2),d1
- beq.s nodestnote
- add.w d0,d0
- lea playperiods(pc),a1
- move.w (a1,d0.w),60(a2)
- move.w 60(a2),d0
- sub.w 10(a2),d0
- beq.s noslider
- bpl.s itshigher
- neg.w d1
- itshigher:
- move.w d1,62(a2)
- nodestnote:
- move.w 62(a2),d1
- beq.s noslider
- bmi.s downwithit
- add.w d1,10(a2)
- move.w 10(a2),d0
- cmp.w 60(a2),d0
- blt.s noslider
- clr.w 62(a2)
- move.w 60(a2),10(a2)
- rts
-
- downwithit:
- add.w d1,10(a2)
- move.w 10(a2),d0
- cmp.w 60(a2),d0
- bgt.s noslider
- clr.w 62(a2)
- move.w 60(a2),10(a2)
- noslider:
- rts
-
- arpeggio:
- lea myatab(pc),a1
- move.w 52(a2),d0
- move.b d0,2(a1)
- and.b #$f,2(a1)
- lsr.w #$4,d0
- move.b d0,(a1)
- move.b 6(a0),d0
- move.b (a1,d0.w),d0
- add.w 32(a2),d0
- add.w d0,d0
- lea playperiods(pc),a1
- move.w (a1,d0.w),d0
- move.w d0,10(a2)
- rts
-
- myatab: dc.l $0
-
- pitchup:move.w 52(a2),d0
- neg.w d0
- move.w d0,58(a2)
- rts
-
- pitchdown:
- move.w 52(a2),d0
- move.w d0,58(a2)
- rts
-
- volumeup:
- tst.w 18(a2)
- bne.s novolchange
- tst.b 4(a0)
- bne.s noinsset
- tst.w 48(a2)
- beq.s noinsset
- move.l 22(a2),a4
- move.b 17(a4),13(a2)
- noinsset:
- move.w 52(a2),d1
- add.w d1,d1
- add.w d1,d1
- move.w 12(a2),d0
- add.w d1,d0
- cmp.w #$100,d0
- blt.s not256
- moveq #$0,d0
- not.b d0
- not256: move.w d0,12(a2)
- rts
-
- volumedown:
- tst.w 18(a2)
- bne.s novolchange
- tst.b 4(a0)
- bne.s noinsset2
- tst.w 48(a2)
- beq.s noinsset2
- move.l 22(a2),a4
- move.b 17(a4),13(a2)
- noinsset2:
- move.w 52(a2),d1
- add.w d1,d1
- add.w d1,d1
- move.w 12(a2),d0
- sub.w d1,d0
- bpl.s not00
- clr.w d0
- not00: move.w d0,12(a2)
- novolchange:
- rts
-
- setadsrattack:
- move.l 22(a2),a4
- move.w 52(a2),d0
- move.b d0,16(a4)
- move.b d0,17(a4)
- rts
-
- setpatternlen:
- move.b 53(a2),5(a0)
- rts
-
- volumechange:
- move.w 52(a2),d0
- move.w d0,8(a6,d4.w)
- add.w d0,d0
- add.w d0,d0
- cmp.w #$ff,d0
- blt.s notff
- move.w #$ff,d0
- notff: move.w d0,12(a2)
- rts
-
- speedchange:
- move.b 53(a2),d0
- and.b #$f,d0
- beq.s novolchange
- move.b d0,1(a0)
- rts
-
- dovibrato:
- move.l 22(a2),a4
- tst.b 9(a4)
- beq.s long03
-
- move.b 11(a4),d6
- cmp.b 43(a2),d6
- beq.s novdelay
- addq.b #$1,43(a2)
- long03: rts
-
- novdelay:
- move.b 10(a4),d7
- sub.b d7,d6
- move.b d6,43(a2)
- move.b 9(a4),d6
- cmp.b 45(a2),d6
- bne.s notvsame
- move.b #-$1,45(a2)
- notvsame:
- addq.b #$1,45(a2)
- clr.w d7
- move.w 44(a2),d6
- move.b 8(a4),d7
- lsl.w #$4,d7
- add.w d6,d7
- move.l vibratolists(pc),a4
- move.b (a4,d7.w),d6
- ext.w d6
- add.w d6,10(a2)
- rts
-
- doarpeggio:
- move.l 22(a2),a4
- tst.b 5(a4)
- beq.s long02
-
- move.b 7(a4),d6
- cmp.b 39(a2),d6
- beq.s noadelay
- addq.b #$1,39(a2)
- long02: rts
-
- noadelay:
- move.b 6(a4),d7
- sub.b d7,d6
- move.b d6,39(a2)
- clr.w d6
- move.b 5(a4),d6
- cmp.b 41(a2),d6
- bne.s notasame
- move.b #-$1,41(a2)
- notasame:
- addq.b #$1,41(a2)
- move.w 40(a2),d6
- clr.w d7
- move.b 4(a4),d7
- lsl.w #$4,d7
- add.w d6,d7
- move.l arpeggiolists(pc),a4
- move.b (a4,d7.w),d6
- ext.w d6
- add.w 32(a2),d6
- lea playperiods(pc),a4
- add.w d6,d6
- move.w (a4,d6.w),10(a2)
- rts
-
- dowaveform:
- move.l 22(a2),a4
- tst.b 1(a4)
- beq.s long0
-
- move.b 3(a4),d6
- cmp.b 35(a2),d6
- beq.s nowdelay
- addq.b #$1,35(a2)
- long0: rts
-
- nowdelay:
- move.b 2(a4),d7
- sub.b d7,d6
- move.b d6,35(a2)
- move.b 1(a4),d6
- cmp.b 37(a2),d6
- bne.s notsame
- move.b #-$1,37(a2)
- notsame:addq.b #$1,37(a2)
- move.w 36(a2),d6
- clr.w d7
- move.b (a4),d7
- lsl.w #$4,d7
- add.w d6,d7
- moveq #$0,d6
- move.l wavelists(pc),a4
- move.b (a4,d7.w),d6
- bpl.s allwaveok
- subq.b #$1,37(a2)
- rts
-
- allwaveok:
- move.b d6,73(a2)
- lsl.w #$6,d6
- move.l sampletab(pc),a4
- add.l d6,a4
- move.l (a4)+,26(a2)
- move.w (a4),30(a2)
- move.l 26(a2),(a6,d4.w)
- move.w 30(a2),4(a6,d4.w)
- rts
-
- doadsrcurve:
- bsr.s doadsrcalc
- move.w 12(a2),d0
- lsr.w #$2,d0
- move.w d0,8(a6,d4.w)
- rts
-
- doadsrcalc:
- move.l 22(a2),a4
- lea $10(a4),a4
-
- tst.w 18(a2)
- beq.s noadsr
- clr.w d6
- clr.w d7
- cmp.w #$4,18(a2)
- beq.s attack
- cmp.w #$3,18(a2)
- beq.s decay
- cmp.w #$2,18(a2)
- beq.s sustain
- cmp.w #$1,18(a2)
- beq.s release
- noadsr: rts
-
- attack: move.b (a4),d6
- move.b 1(a4),d7
- add.w d7,12(a2)
- cmp.w 12(a2),d6
- bgt.s returnadsr
- move.w d6,12(a2)
- subq.w #$1,18(a2)
- rts
-
- decay: move.b 2(a4),d6
- move.b 3(a4),d7
- beq.s nodecay
- sub.w d7,12(a2)
- cmp.w 12(a2),d6
- blt.s returnadsr
- move.w d6,12(a2)
- nodecay:subq.w #$1,18(a2)
- rts
-
- sustain:move.b 4(a4),d6
- cmp.w 20(a2),d6
- bne.s contsustain
- subq.w #$1,18(a2)
- rts
-
- release:move.b 5(a4),d6
- move.b 6(a4),d7
- beq.s norelease
- sub.w d7,12(a2)
- cmp.w 12(a2),d6
- blt.s returnadsr
- move.w d6,12(a2)
- norelease:
- subq.w #$1,18(a2)
- returnadsr:
- rts
-
- contsustain:
- addq.w #$1,20(a2)
- rts
-
- dma: dc.w $0
-
- voice1: dc.l $0 ; pos. and trans. offset
- dc.l $0 ; samplestard
- dc.w $0 ; samplelength
- dc.w $0 ; sampleperiod
- dc.w $0 ; samplevolume
- dc.w $1 ; dma-enable bit
- dc.w $a0 ; channel-register offset
- dc.w $0 ; adsr-status
- dc.w $0 ; counter for sustain
- dc.l $0 ; inst. address
- dc.l $0 ; repeatstart
- dc.w $0 ; repeatlength
- dc.w $0 ; original-note
- dc.w $0 ; counter for wavelist delay
- dc.w $0 ; counter for wavelist offset
- dc.w $0 ; counter for arpeggio delay
- dc.w $0 ; counter for arpeggio offset
- dc.w $0 ; counter for vibrato delay
- dc.w $0 ; counter for vibrato offcet
- dc.w $0 ; current-note
- dc.w $0 ; current-ins.
- dc.w $0 ; current-fx
- dc.w $0 ; current-fx-info
- dc.w $0 ; counter for pitchbend
- dc.w $0 ; inst. transp
- dc.w $0 ; pitchbend-value
- dc.w $0 ; note-slide-note
- dc.w $0 ; note-slide-speed
- dc.l $0 ; note-address
- dc.w $0 ; empty-notes-counter
- dc.w $0 ; note-transpose
- dc.w $0 ; current-waveform used
-
- voice2: dc.l $0
- dc.l $0
- dc.w $0
- dc.w $0
- dc.w $0
- dc.w $2
- dc.w $b0
- dc.w $0
- dc.w $0
- dc.l $0
- dc.l $0
- dc.w $0
- dc.w $0
- dc.w $0
- dc.w $0
- dc.w $0
- dc.w $0
- dc.w $0
- dc.w $0
- dc.w $0
- dc.w $0
- dc.w $0
- dc.w $0
- dc.w $0
- dc.w $0
- dc.w $0
- dc.w $0
- dc.w $0
- dc.l $0
- dc.w $0
- dc.w $0
- dc.w $0
-
- voice3: dc.l $0
- dc.l $0
- dc.w $0
- dc.w $0
- dc.w $0
- dc.w $4
- dc.w $c0
- dc.w $0
- dc.w $0
- dc.l $0
- dc.l $0
- dc.w $0
- dc.w $0
- dc.w $0
- dc.w $0
- dc.w $0
- dc.w $0
- dc.w $0
- dc.w $0
- dc.w $0
- dc.w $0
- dc.w $0
- dc.w $0
- dc.w $0
- dc.w $0
- dc.w $0
- dc.w $0
- dc.w $0
- dc.l $0
- dc.w $0
- dc.w $0
- dc.w $0
-
- voice4: dc.l $0
- dc.l $0
- dc.w $0
- dc.w $0
- dc.w $0
- dc.w $8
- dc.w $d0
- dc.w $0
- dc.w $0
- dc.l $0
- dc.l $0
- dc.w $0
- dc.w $0
- dc.w $0
- dc.w $0
- dc.w $0
- dc.w $0
- dc.w $0
- dc.w $0
- dc.w $0
- dc.w $0
- dc.w $0
- dc.w $0
- dc.w $0
- dc.w $0
- dc.w $0
- dc.w $0
- dc.w $0
- dc.l $0
- dc.w $0
- dc.w $0
- dc.w $0
-
- playperiods:
- dc.w $0
- dc.w $1680,$1530,$1400,$12e0,$11d0,$10d0,$fe0,$f00,$e20,$d60,$ca0,$be8
- dc.w $b40,$a98,$a00,$970,$8e8,$868,$7f0,$780,$710,$6b0,$650,$5f4
- dc.w $5a0,$54c,$500,$4b8,$474,$434,$3f8,$3c0,$388,$358,$328,$2fa
- dc.w $2d0,$2a6,$280,$25c,$23a,$21a,$1fc,$1e0,$1c5,$1ac,$194,$17d
- dc.w $168,$153,$140,$12e,$11d,$10d,$fe,$f0,$e2,$d6,$ca,$be
- dc.w $b4,$aa,$a0,$97,$8f,$87,$7f,$78,$71,$06b,$065,$05f
-
- waveadds: dcb.l 4,0
-
- song: dc.l 0
- sampleno: dc.w 0
- midimode: dc.w 0
- length: dc.b 0
- speed: dc.b 0
- currentpos: dc.b 0
- currentnot: dc.b 0
- currentrast: dc.b 0
- patlength: dc.b 0
- currentrast2: dc.b 0
-
-